package com.agritech.smartfarming.chainofresponsibility;

import com.agritech.smartfarming.model.AgriculturalMachine;

/**
 * 安全处理器接口，实现责任链模式
 */
public abstract class SafetyHandler {
    protected SafetyHandler nextHandler;
    
    /**
     * 设置下一个处理器
     * @param nextHandler 下一个处理器
     * @return 下一个处理器实例，用于链式调用
     */
    public SafetyHandler setNext(SafetyHandler nextHandler) {
        this.nextHandler = nextHandler;
        return nextHandler;
    }
    
    /**
     * 处理安全事件
     * @param machine 农机设备
     * @param event 安全事件
     * @return 是否处理成功
     */
    public abstract boolean handle(AgriculturalMachine machine, SafetyEvent event);
    
    /**
     * 将请求传递给下一个处理器
     * @param machine 农机设备
     * @param event 安全事件
     * @return 下一个处理器的处理结果
     */
    protected boolean passToNext(AgriculturalMachine machine, SafetyEvent event) {
        if (nextHandler != null) {
            return nextHandler.handle(machine, event);
        }
        // 没有下一个处理器，无法处理
        System.out.println("警告: 安全事件 [" + event.getType() + "] 未能被任何处理器处理!");
        return false;
    }
} 